package com.prd.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Objects;

/**
 * <p>
 * 客户-项目
 * </p>
 *
 * @author o1
 * @since 2023-11-24
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("项目CustomerProjectDTO")
public class CustomerProjectDTO implements Serializable {

    private static final long serialVersionUID = 1L;


    /**
     * 客户编号
     */
    @ApiModelProperty("客户编号")
    private String customerNo;

    /**
     * 公司名称
     */
    @ApiModelProperty("公司名称")
    private String companyName;

    /**
     * 联系人/客人id
     */
    @ApiModelProperty("联系人/客人id")
    private String guestNo;

    /**
     * 联系人/客人名称
     */
    @ApiModelProperty("联系人/客人名称")
    private String guestName;

    /**
     * 归属客户
     */
    @ApiModelProperty("归属客户")
    private CustomerDTO customer;

    /**
     * 项目id
     *
     */
    @ApiModelProperty("项目id")
    private String projectId;

    /**
     * 项目名称
     */
    @ApiModelProperty("项目名称")
    private String projectName;

    /**
     * 项目规模
     */
    @ApiModelProperty("项目规模")
    private String projectScope;

    /**
     * 项目所在市镇
     */
    @ApiModelProperty("项目所在市镇")
    private String projectAddressTown;

    /**
     * 项目详细地址
     */
    @ApiModelProperty("项目详细地址")
    private String projectAddress;

    /**
     * 项目预计完成时间
     */
    @ApiModelProperty("项目预计完成时间")
    private Date projectPlanFinishDate;

    /**
     * 项目登记类别: A类，B类...
     */
    @ApiModelProperty("项目登记类别: A类，B类...")
    private int projectLevel;

    /**
     * 项目进度,全部0，洽谈1，成交2，失败3
     */
    @ApiModelProperty("项目进度,全部0，洽谈1，成交2，失败3")
    private int projectBusStatus;

    /**
     * 状态：正常0，公共资源库1，已销户2，已隐藏3
     */
    @ApiModelProperty("状态：正常0，公共资源库1，已销户2，已隐藏3")
    private int status;

    /**
     * 项目需求id列表
     */
    @ApiModelProperty("项目需求id列表")
    private List<CustomerRemarkDTO> projectRequirementsList;

    /**
     * 项目备注id列表
     */
    @ApiModelProperty("项目备注id列表")
    private List<CustomerRemarkDTO> projectRemarkList;

    /**
     * 项目分析id列表
     */
    @ApiModelProperty("项目分析id列表")
    private List<CustomerRemarkDTO> projectAnalyzeList;

    /**
     * 销售/业务-策略/方案id列表
     */
    @ApiModelProperty("销售/业务-策略/方案id列表")
    private List<CustomerRemarkDTO> projectStrategyList;

    /**
     * 销售/业务-计划/实施id列表
     */
    @ApiModelProperty("销售/业务-计划/实施id列表")
    private List<CustomerRemarkDTO> projectPlanList;


    /**
     * 项目取消，失败，成交备注
     */
    @ApiModelProperty("项目取消，失败，成交备注")
    private CustomerRemarkDTO projectResult;

    @Override
    public int hashCode() {
        return Objects.hash(companyName + projectName) & Integer.MAX_VALUE;
    }

}
